home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / workbench / libs / unixlib.lha / unix / src / setenv.c < prev    next >
C/C++ Source or Header  |  1995-12-05  |  948b  |  45 lines

  1. #include <stdlib.h>
  2. #include <string.h>
  3. #include <errno.h>
  4. #include <dos/var.h>
  5. #include <proto/dos.h>
  6.  
  7. /*
  8.  * setenv --
  9.  *    Set the value of the local variable "name" to be "value".
  10.  *    If rewrite is set, replace any current value.
  11.  */
  12. int
  13. setenv(const char *name, const char *value, int rewrite)
  14. {
  15.     char buf[32];
  16.     int ret = 0;
  17.     int len = strlen(name);
  18.     char *tname = malloc(len+1);
  19.  
  20.     strcpy(tname, name);
  21.     if (tname[len-1] == '=')        /* get rid of `=' in name  */
  22.         tname[len-1] = 0;
  23.     if (*value == '=')            /* get rid of `=' in value */
  24.         ++value;
  25.     len = strlen(value);
  26.     if (GetVar(tname, buf, sizeof(buf), LV_VAR) < 0) /* if doesn't exists */
  27.         rewrite = 1;                 /* set unconditional */
  28.     if (rewrite && !SetVar(tname, value, len, GVF_LOCAL_ONLY)) {
  29.         errno = ENOMEM;
  30.         ret = -1;
  31.     }
  32.     free(tname);
  33.     return(ret);
  34. }
  35.  
  36. /*
  37.  * unsetenv(name) --
  38.  *    Delete environmental variable "name".
  39.  */
  40. void
  41. unsetenv(const char *name)
  42. {
  43.     DeleteVar(name, GVF_LOCAL_ONLY);
  44. }
  45.